1738863f7d7dacacc11779bad4b401eab1c030ec,object/src/main/java/com/orientechnologies/orient/object/enhancement/OObjectProxyMethodHandler.java,OObjectProxyMethodHandler,setValue,#Object#String#Object#,528

Before Change


							valueToSet = manageCollectionSave(f, (Collection<?>) valueToSet, customSerialization);
						} else if (valueToSet instanceof Map<?, ?>) {
							boolean customSerialization = false;
							Field f = getField(fieldName, self.getClass());
							if (OObjectEntitySerializer.isSerializedType(f)) {
								customSerialization = true;
							}

After Change


					((ODocument) valueToSet).addOwner(doc);
				doc.field(fieldName, valueToSet);
			} else if (((valueToSet instanceof Collection<?> || valueToSet instanceof Map<?, ?>)) || valueToSet.getClass().isArray()) {
				Class<?> genericMultiValueType = OReflectionHelper.getGenericMultivalueType(OObjectEntitySerializer.getField(fieldName,
						self.getClass()));
				if (genericMultiValueType != null && !OReflectionHelper.isJavaType(genericMultiValueType)) {
					if (!(valueToSet instanceof OLazyObjectMultivalueElement)) {
						if (valueToSet instanceof Collection<?>) {
							boolean customSerialization = false;
							Field f = OObjectEntitySerializer.getField(fieldName, self.getClass());
							if (OObjectEntitySerializer.isSerializedType(f)) {
								customSerialization = true;
							}
							valueToSet = manageCollectionSave(f, (Collection<?>) valueToSet, customSerialization);
						} else if (valueToSet instanceof Map<?, ?>) {
							boolean customSerialization = false;
							Field f = OObjectEntitySerializer.getField(fieldName, self.getClass());
							if (OObjectEntitySerializer.isSerializedType(f)) {
								customSerialization = true;
							}
							valueToSet = manageMapSave(f, (Map<?, ?>) valueToSet, customSerialization);
						} else if (valueToSet.getClass().isArray()) {
							valueToSet = manageArraySave(fieldName, (Object[]) valueToSet);
						}
					}
				} else {
					if (OObjectEntitySerializer.isToSerialize(valueToSet.getClass())) {
						doc.field(fieldName, OObjectEntitySerializer.serializeFieldValue(
								OObjectEntitySerializer.getField(fieldName, self.getClass()).getType(), valueToSet));
					} else {
						if (valueToSet.getClass().isArray()) {
							OClass schemaClass = doc.getSchemaClass();
							OProperty schemaProperty = null;
							if (schemaClass != null)
								schemaProperty = schemaClass.getProperty(fieldName);

							doc.field(fieldName, OObjectEntitySerializer.typeToStream(valueToSet,
									schemaProperty != null ? schemaProperty.getType() : null, getDatabase(), doc));
						} else
							doc.field(fieldName, valueToSet, OObjectEntitySerializer.getTypeByClass(self.getClass(), fieldName));
					}
				}
			} else if (valueToSet.getClass().isEnum()) {
				doc.field(fieldName, ((Enum) valueToSet).name());
			} else {
				if (OObjectEntitySerializer.isToSerialize(valueToSet.getClass())) {
					doc.field(fieldName, OObjectEntitySerializer.serializeFieldValue(
							OObjectEntitySerializer.getField(fieldName, self.getClass()).getType(), valueToSet));
				} else if (getDatabase().getEntityManager().getEntityClass(valueToSet.getClass().getSimpleName()) != null
						&& !valueToSet.getClass().isEnum()) {
					valueToSet = OObjectEntitySerializer.serializeObject(valueToSet, getDatabase());